//
//  Date+Extension.swift
//  WeiBo
//
//  Created by Apple on 16/9/6.
//  Copyright © 2016年 KY. All rights reserved.
//

import UIKit

extension Date {
    //  通过时间字符串转成时间对象
    static func sinaDate(createAt: String) -> Date {
        //  代码执行到此，发微博时间不为空
//        let dt = DateFormatter()
//        //  指定本地化信息
//        dt.locale = Locale(identifier: "en_US")
        let dt = dateFormatter
        dt.dateFormat = "EEE MMM dd HH:mm:ss z yyyy"
        let createDate = dt.date(from: createAt)!
        return createDate
    }
    
    
    var sinaDateString: String {
        
        let dt = dateFormatter
        if isThisYear(createDate: self) {
            
            //  通过日历对象判断
            let calendar = Calendar.current
            if calendar.isDateInToday(self) {
                //  今天
                let timeInterval = abs(self.timeIntervalSinceNow)
                if timeInterval < 60 {
                    //  1分钟之内
                    return "刚刚"
                } else if timeInterval < 3600 {
                    //  1小时之内
                    let result = Int(timeInterval) / 60
                    return "\(result)分钟前"
                } else {
                    //  xx小时前
                    let result = Int(timeInterval) / 3600
                    return "\(result)小时前"
                }
                
                
            } else if calendar.isDateInYesterday(self) {
                //  昨天
                dt.dateFormat = "昨天 HH:mm"
            } else {
                //  其它
                dt.dateFormat = "MM-dd HH:mm"
            }
            
            
        } else {
            dt.dateFormat = "yyyy-MM-dd HH:mm"
        }
        
        
        return dt.string(from: self)
    }
    
    //  判断是否是今年
    private func isThisYear(createDate: Date) -> Bool {
        
        let dt = DateFormatter()
        dt.locale = Locale(identifier: "en_US")
        dt.dateFormat = "yyyy"
        let createYear = dt.string(from: createDate)
        let currentYear = dt.string(from: Date())
        
        return createYear == currentYear
    }

}
